package model.commandes;

import model.document.Document;
import model.document.Section;
import model.document.SectionNonVide;

public class Degrader implements Commande {

	@Override
	public void visit(Document document) {
		Section temp = document.getSectionCourante();
		Section parent = temp.getSectionParente();
		//modification de l'indentation de la section a degrader
		temp.degrader();
		//creation de la section intermediaire
		Section lien = new SectionNonVide();
		//ajout de la section intermediaire a la section parent
		parent.addSousSection(lien, parent.getSousSections().indexOf(temp));
		//ajout de la section degradee a la section intermediaire
		lien.addSousSection(temp, 0);
		
		//Si la section degradee possede des sous-sections, il faut les replacer dans l'arbre.
		for(Section s : temp.getSousSections()){
			//ajout de la sous section de la section degradee a la section intermediaire
			lien.addSousSection(s ,lien.getSousSections().size());
			//retrait de la sous section de la section degradee
			temp.remove(s);
		}
		//retrait de la section degradee des sous sections de la section parente
		parent.remove(temp);
	}

}
